<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of GestEnsemble
 *
 * @author Skaye
 */
class GestEnsemble {

    private $leClient;
    private $lesClients;
    private $nbClients;
    private $lesProduits;
    private $leProduit;
    private $nbProduits;
    private $lesArticles;
    private $nbArticles;
    private $lesMarques;
    private $nbMarques;
    private $lesContextes;
    private $nbContextes;
    private $typeProduits;
    private $nbTypeProduits;

    function __construct() {
        $this->lesClients = Array();
        $this->nbClients = 0;
        $this->lesProduits = Array();
        $this->nbProduits = 0;
        $this->lesArticles = Array();
        $this->nbArticles = 0;
        $this->lesMarques = Array();
        $this->nbMarques = 0;
        $this->typeProduits = Array();
        $this->nbTypesProduits = 0;
    }

    //Accesseurs
    public function getLeClient() {
        return $this->leClient;
    }

    public function getLesClients() {
        return $this->lesClients;
    }

    public function getNbClients() {
        return $this->nbClients;
    }

    public function getLesProduits() {
        return $this->lesProduits;
    }

    public function getLeProduit() {
        return $this->leProduit;
    }

    public function getNbProduits() {
        return $this->nbProduits;
    }

    public function getLesArticles() {
        return $this->lesArticles;
    }

    public function getNbArticles() {
        return $this->nbArticles;
    }

    public function getMarques() {
        return $this->lesMarques;
    }

    public function getnbMarques() {
        return $this->nbMarques;
    }

    public function getContextes() {
        return $this->lesContextes;
    }

    public function getnbContextes() {
        return $this->nbContextes;
    }

    public function getTypeProduit() {
        return $this->typeProduits;
    }

    public function ajoutUnClient($unClient) {
        $this->nbClients = $this->nbClients + 1;
        $this->lesClients[$this->nbClients] = $unClient;
    }

    public function ajoutUnProduit($unProduit) {
        $this->nbProduits = $this->nbProduits + 1;
        $this->lesProduits[$this->nbProduits] = $unProduit;
    }

    public function ajoutUnArticle($unArticle) {
        $this->nbArticles = $this->nbArticles + 1;
        $this->lesArticles[$this->nbArticles] = $unArticle;
    }

    public function ajoutUnContexte($unContexte) {
        $this->nbContextes = $this->nbContextes + 1;
        $this->lesContextes[$this->nbContextes] = $unContexte;
    }

    public function ajoutUneMarque($uneMarque) {
        $this->nbMarques = $this->nbMarques + 1;
        $this->lesMarques[$this->nbMarques] = $uneMarque;
    }

    public function ajoutUnTypeProduit($unProduit) {
        $this->nbTypeProduits = $this->nbTypeProduits + 1;
        $this->typeProduits[$this->nbTypeProduits] = $unProduit;
    }

    public function chargerProduits(Bdd $sql) {
        $reqProduit = "SELECT pro_id, pro_libelle, pro_prixLocation, pro_image, pro_desc, pro_caution, pro_couleur, pro_dimensions, pro_poids, pro_stock, pro_marque, pro_contexte, pro_dureeMax FROM produit";
        $resultProduit = $sql->query($reqProduit);
 
        foreach ($resultProduit as $leProduit) {
            $unProduit = new Produit($leProduit["pro_libelle"],
                                     $leProduit["pro_prixLocation"],
                                     $leProduit["pro_image"],
                                     $leProduit["pro_desc"],
                                     $leProduit["pro_caution"],
                                     $leProduit["pro_couleur"],
                                     $leProduit["pro_dimensions"],
                                     $leProduit["pro_poids"],
                                     $leProduit["pro_stock"],
                                     $leProduit["pro_marque"],
                                     $leProduit["pro_contexte"],
                                     $leProduit["pro_dureeMax"]);

            $unProduit->setId($leProduit['pro_id']);

            $this->ajoutUnProduit($unProduit);
        }
    }
    
        public function chargerProduitsEdit(Bdd $sql, $maqProd, $conProd) {
        $reqProduit = "SELECT pro_id, pro_libelle, pro_prixLocation, pro_image, pro_desc, pro_caution, pro_couleur, pro_dimensions, pro_poids, pro_stock, pro_marque, pro_contexte, pro_dureeMax FROM produit
                       WHERE pro_marque = $maqProd
                       AND pro_contexte = $conProd";

        $resultProduit = $sql->query($reqProduit);
 
        foreach ($resultProduit as $leProduit) {
            $unProduit = new Produit($leProduit["pro_libelle"],
                                     $leProduit["pro_prixLocation"],
                                     $leProduit["pro_image"],
                                     $leProduit["pro_desc"],
                                     $leProduit["pro_caution"],
                                     $leProduit["pro_couleur"],
                                     $leProduit["pro_dimensions"],
                                     $leProduit["pro_poids"],
                                     $leProduit["pro_stock"],
                                     $leProduit["pro_marque"],
                                     $leProduit["pro_contexte"],
                                     $leProduit["pro_dureeMax"]);

            $unProduit->setId($leProduit['pro_id']);

            $this->ajoutUnProduit($unProduit);
        }
    }

    public function chargerTypeProduit(Bdd $sql, $libelleProd) {
        $reqProduit = "SELECT DISTINCT pro_id, pro_libelle, pro_prixLocation, pro_image, pro_desc, pro_caution, pro_couleur, pro_dimensions, pro_poids, pro_stock, pro_marque, pro_contexte, pro_dureeMax FROM produit
                       WHERE pro_libelle LIKE '%$libelleProd%'";

        $resultProduit = $sql->query($reqProduit);
        foreach ($resultProduit as $leProduit) {
            $unProduit = new Produit($leProduit["pro_libelle"],
                                     $leProduit["pro_prixLocation"],
                                     $leProduit["pro_image"],
                                     $leProduit["pro_desc"],
                                     $leProduit["pro_caution"],
                                     $leProduit["pro_couleur"],
                                     $leProduit["pro_dimensions"],
                                     $leProduit["pro_poids"],
                                     $leProduit["pro_stock"],
                                     $leProduit["pro_marque"],
                                     $leProduit["pro_contexte"],
                                     $leProduit["pro_dureeMax"]);

            $unProduit->setId($leProduit['pro_id']);

            $this->ajoutUnTypeProduit($unProduit);
        }
    }

    public function chargerLeProduit(Bdd $sql, $idProd) {
        $reqProduit = "SELECT pro_id, pro_libelle, pro_prixLocation, pro_image, pro_desc, pro_caution, pro_couleur, pro_dimensions, pro_poids, pro_stock, pro_marque, pro_contexte, pro_dureeMax FROM produit WHERE pro_id=$idProd";
        $resultProduit = $sql->query($reqProduit);

        foreach ($resultProduit as $leProduit) {
            ;
            $unProduit = new Produit($leProduit["pro_libelle"],
                                     $leProduit["pro_prixLocation"],
                                     $leProduit["pro_image"],
                                     $leProduit["pro_desc"],
                                     $leProduit["pro_caution"],
                                     $leProduit["pro_couleur"],
                                     $leProduit["pro_dimensions"],
                                     $leProduit["pro_poids"],
                                     $leProduit["pro_stock"],
                                     $leProduit["pro_marque"],
                                     $leProduit["pro_contexte"],
                                     $leProduit["pro_dureeMax"]);
            
            $unProduit->setId($idProd);

            $this->leProduit = $unProduit;
        }
    }

    public function chargerContextes(Bdd $sql) {
        $req = "SELECT con_id, con_libelle FROM contexte";
        $lesContextes = $sql->query($req);

        foreach ($lesContextes as $leContexte) {
            
            $unContexte = new contexte($leContexte['con_libelle']);
            $unContexte->setId($leContexte['con_id']);
            
            $this->ajoutUnContexte($unContexte);
        }
    }

    public function chargerMarques(Bdd $sql) {
        $req = "SELECT maq_id, maq_libelle FROM marque";
        $lesMarques = $sql->query($req);
        
        foreach ($lesMarques as $laMarque) {
            $uneMarque = new Marque($laMarque['maq_libelle']);
            $uneMarque->setId($laMarque['maq_id']);
            
            $this->ajoutUneMarque($uneMarque);
        }
    }
    
    public function chargerArticles(Bdd $sql) {
        $reqArticles = "SELECT art_id, art_libelle, art_prixLocation, art_image, art_desc, art_caution, art_couleur, art_dimensions, art_poids, art_stock, art_marque, art_contexte, art_dureeMax FROM article";
        $resultArticles = $sql->query($reqArticles);
        foreach ($resultArticles as $lArticle) {
            $unArticle = new Article($lArticle["ART_LIBELLE"],
                                     $lArticle["ART_PRIXLOCATION"],
                                     $lArticle["ART_IMAGE"],
                                     $lArticle["ART_DESC"],
                                     $lArticle["ART_CAUTION"],
                                     $lArticle["ART_COULEUR"],
                                     $lArticle["ART_DIMENSIONS"],
                                     $lArticle["ART_POIDS"],
                                     $lArticle["ART_STOCK"],
                                     $lArticle["ART_MARQUE"],
                                     $lArticle["ART_CONTEXTE"],
                                     $lArticle["PRO_DUREEMAX"]);

            $unArticle->setId($lArticle['ART_ID']);
            $this->ajoutUnArticle($unArticle);
        }
    }

    public function ChargerLeClient(Bdd $sql, $login, $mdp) {
        $reqClient = "Select * FROM CLIENT WHERE cli_login ='$login' AND cli_mdp = '$mdp'";
        $resultClient = $sql->query($reqClient);

        foreach ($resultClient as $leClient) {
            $unClient = new client($leClient['CLI_NOM'],
                            $leClient['CLI_PRENOM'],
                            $leClient['CLI_EMAIL'],
                            $leClient['CLI_RUE'],
                            $leClient['CLI_CP'],
                            $leClient['CLI_VILLE'],
                            $leClient['CLI_TEL'],
                            $leClient['CLI_LOGIN'],
                            $leClient['CLI_MDP']);
            $unClient->setId($leClient['CLI_ID']);
        }
        $this->leClient = $unClient;
    }

    public function ChargerLeClientById(Bdd $sql, $id) {
        $reqClient = "Select * FROM CLIENT WHERE cli_id = '$id'";
        $resultClient = $sql->query($reqClient);

        foreach ($resultClient as $leClient) {
            $unClient = new client($leClient['CLI_NOM'],
                            $leClient['CLI_PRENOM'],
                            $leClient['CLI_EMAIL'],
                            $leClient['CLI_RUE'],
                            $leClient['CLI_CP'],
                            $leClient['CLI_VILLE'],
                            $leClient['CLI_TEL'],
                            $leClient['CLI_LOGIN'],
                            $leClient['CLI_MDP']);

            $unClient->setId($leClient['CLI_ID']);
        }
        $this->leClient = $unClient;
    }

    public function ChargerLesClients(Bdd $sql) {
        $reqClient = "Select * FROM CLIENT";
        $resultClient = $sql->query($reqClient);

        foreach ($resultClient as $leClient) {
            $unClient = new client($leClient['CLI_NOM'],
                            $leClient['CLI_PRENOM'],
                            $leClient['CLI_EMAIL'],
                            $leClient['CLI_RUE'],
                            $leClient['CLI_CP'],
                            $leClient['CLI_VILLE'],
                            $leClient['CLI_TEL'],
                            $leClient['CLI_LOGIN'],
                            $leClient['CLI_MDP']);

            $unClient->setId($leClient['CLI_ID']);
            $this->ajoutUnClient($unClient);
        }
    }

    public function VerifClient($login, $mdp, Bdd $sql) {
        $reqVerif = "SELECT count(cli_id) as nb FROM client WHERE cli_login ='$login' AND cli_mdp ='$mdp'";
        $lesClient = $sql->query($reqVerif);

        foreach ($lesClient as $leClient) {
            if ($leClient['nb'] == 1) {
                $res = true;
            } else {
                $res = false;
            }
        }

        return $res;
    }

    public function VerifAdmin($login, $mdp, Bdd $sql) {
        $reqVerif = "SELECT count(adm_id) as nb FROM admin WHERE adm_login ='$login' AND adm_password ='$mdp'";
        $lesAdmins = $sql->query($reqVerif);
        foreach ($lesAdmins as $lAdmin) {
            if ($lAdmin['nb'] == 1) {
                $res = true;
            } else {
                $res = false;
            }
        }

        return $res;
    }

    public function findClientDepuisEmail($email, Bdd $sql) {
        $reqRetrive = "SELECT cli_id FROM client WHERE cli_email = '$email'";
        $lesClient = $sql->query($reqRetrive);

        foreach ($lesClient as $leClient) {
            $numClient = $leClient['cli_id'];
        }
        if (isset($leClient['cli_id'])) {
            $res = true;
        } else {
            $res = false;
        }


        return $res;
    }

    public function rechercheDepuisLibProd($filter, Bdd $sql) {
        $reqSearch = "SELECT * FROM produit WHERE pro_libelle like '%$filter%'";
        $lesSearch = $sql->query($reqSearch);


        $i = 0;
        $tab = Array();


        foreach ($lesSearch as $leProduit) {
            $i++;
            $unProduit = new Produit($leProduit["PRO_LIBELLE"],
                                     $leProduit["PRO_PRIXLOCATION"],
                                     $leProduit["PRO_IMAGE"],
                                     $leProduit["PRO_DESC"],
                                     $leProduit["PRO_CAUTION"],
                                     $leProduit["PRO_COULEUR"],
                                     $leProduit["PRO_DIMENSIONS"],
                                     $leProduit["PRO_POIDS"],
                                     $leProduit["PRO_STOCK"],
                                     $leProduit["PRO_MARQUE"],
                                     $leProduit["PRO_CONTEXTE"],
                                     $leProduit["PRO_DUREEMAX"]);
            
            $unProduit->setId($leProduit['PRO_ID']);
            
            $tab[$i] = $unProduit;          
        }       
        return $tab;
    }
    public function ChargerLast6Produit(Bdd $sql) {

        $reqProduit = "select * from PRODUIT";
        $resultProduit = $sql->query($reqProduit);
        $tab = Array();

        $req = "SELECT count(pro_id) as max FROM produit";
        $nb = $sql->query($req)->fetchColumn();
        $nb = intval($nb);
        
        foreach ($resultProduit as $key => $leProduit) {
            if ($key >= ($nb - 6)) {
                $unProduit = new Produit($leProduit["PRO_LIBELLE"],
                                $leProduit["PRO_PRIXLOCATION"],
                                $leProduit["PRO_IMAGE"],
                                $leProduit["PRO_DESC"],
                                $leProduit["PRO_CAUTION"],
                                $leProduit["PRO_COULEUR"],
                                $leProduit["PRO_DIMENSIONS"],
                                $leProduit["PRO_POIDS"],
                                $leProduit["PRO_STOCK"],
                                $leProduit["PRO_MARQUE"],
                                $leProduit["PRO_CONTEXTE"],
                                $leProduit["PRO_DUREEMAX"]);

                $unProduit->setId($leProduit["PRO_ID"]);


                $tab[$key] = $unProduit;
            }
        }

        return $tab;
    }
}
?>

